﻿#pragma once
#include "D3DGraphics.h"
#include "Surface.h"
#include "RectF.h"

class Tile
{
private:
	int x, y;
	static int width;
	static int height;
	D3DCOLOR color;
	bool passable;

public:
	Tile();
	Tile(int x, int y, bool passable, D3DCOLOR color);
	virtual ~Tile();
	void Draw(D3DGraphics &gfx) const;
	bool IsPassable() const
	{
		return passable;
	}

	static void SetWidthAndHeight(int w, int h){ width = w; height = h; }

	static int GetIndexXBiasRight(float x){ return x / width; }
	static int GetIndexXBiasLeft(float x)
	{
		int ix = (int)x / width;
		//nếu vị trí của khung nhân vật = vị trí của khung rect trên màn hình thì sẽ lùi lại, 
		//tránh trường hợp bị chồng lên nhau.lúc nào cũng cách tường 1 khoảng 1 pixcel trở lên
		if ((float)(ix*width) == x)
		{
			ix--;
		}
		return ix;
	}

	static int GetIndexYBiasBottom(float y){ return y / height; }
	static int GetIndexYBiasTop(float y)
	{
		int iy = (int)y / height;
		if ((float)(iy*height) == y)
		{
			iy--;
		}
		return iy;
	}

	static RectF GetCRect(int ix, int iy)
	{
		return RectF((float)(iy*height), (float)((iy+1)* height),
			(float)(ix*width), (float)((ix+1)*width));
	}
};